package function接口;

import java.util.function.Consumer;

/**
 * @author : ZhuQi
 * @version : 时间:2022/9/5 23:04 版本:
 * @description : Consumer 消费型接口测试
 */
public class ConsumerDemo {

    public static void main(String[] args) {

        // 输出: 小白
        operatorString("小白", System.out::println); // 小白


        // 输出: 猫熊大
        operatorString("大熊猫",
                s -> System.out.println(new StringBuilder(s).reverse().toString()));
        System.out.println("---------");


        // 输出: 小熊猫 猫熊小
        operatorString("小熊猫",
                System.out::println,
                s -> System.out.println(new StringBuilder(s).reverse().toString()));
    }

    //

    /**
     * 定义一个方法，用不同的方式消费同一个字符串数据两次
     */
    private static void operatorString(String name, Consumer<String> con1, Consumer<String> con2) {
        // 1,void accept(T t) [əkˈsept] 对给定的参数执行此操作
        // con1.accept(name);
        // con2.accept(name);
        // 2,Consumer<T> andThen(Consumer after) 返回一个组合的Consumer，依次执行此操作，然后执行after操作
        con1.andThen(con2).accept(name);
    }

    /**
     *  定义一个方法，消费一个字符串数据
     */
    private static void operatorString(String name, Consumer<String> con) {
        con.accept(name);
    }
}
